#pragma once

#include <map>
#include "WaveSample.h"

typedef std::map<std::string, WaveSample*> StringSoundMap;

class SoundBank
{
public:
	SoundBank(void);
	~SoundBank(void);

	WaveSample* GetWaveSample(std::string& name);
	WaveSample* GetWaveSample(WaveForm waveForm, int frequency, int rate);
	WaveSample* GetWaveSample(WaveForm waveForm, void(*WaveSampleCb)(WaveSample*), int frequency, int rate);
	WaveSample* GetWaveSample(WaveForm waveForm, int frequency, int rate, double intensity);
	WaveSample* GetWaveSample(WaveForm waveForm, void(*WaveSampleCb)(WaveSample*), int frequency, int rate, double intensity);
	void AddWaveSample(WaveSample* sound);
	StringSoundMap* GetMap(){return &soundMap;}


private:
	StringSoundMap soundMap;
	char* dest;
	char* SampleName(WaveForm waveForm, int frequency, double intensity);
};
